home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / gtk-2.0 / gtk / gtkentry.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-04-25  |  8.0 KB  |  224 lines

  1. /* GTK - The GIMP Toolkit
  2.  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
  3.  *
  4.  * This library is free software; you can redistribute it and/or
  5.  * modify it under the terms of the GNU Lesser General Public
  6.  * License as published by the Free Software Foundation; either
  7.  * version 2 of the License, or (at your option) any later version.
  8.  *
  9.  * This library is distributed in the hope that it will be useful,
  10.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12.  * Lesser General Public License for more details.
  13.  *
  14.  * You should have received a copy of the GNU Lesser General Public
  15.  * License along with this library; if not, write to the
  16.  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  17.  * Boston, MA 02111-1307, USA.
  18.  */
  19.  
  20. /*
  21.  * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
  22.  * file for a list of people on the GTK+ Team.  See the ChangeLog
  23.  * files for a list of changes.  These files are distributed with
  24.  * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
  25.  */
  26.  
  27. #ifndef __GTK_ENTRY_H__
  28. #define __GTK_ENTRY_H__
  29.  
  30.  
  31. #include <gdk/gdk.h>
  32. #include <gtk/gtkeditable.h>
  33. #include <gtk/gtkimcontext.h>
  34. #include <gtk/gtkmenu.h>
  35. #include <gtk/gtkentrycompletion.h>
  36. #include <pango/pango.h>
  37.  
  38. G_BEGIN_DECLS
  39.  
  40. #define GTK_TYPE_ENTRY                  (gtk_entry_get_type ())
  41. #define GTK_ENTRY(obj)                  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_ENTRY, GtkEntry))
  42. #define GTK_ENTRY_CLASS(klass)          (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_ENTRY, GtkEntryClass))
  43. #define GTK_IS_ENTRY(obj)               (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_ENTRY))
  44. #define GTK_IS_ENTRY_CLASS(klass)       (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_ENTRY))
  45. #define GTK_ENTRY_GET_CLASS(obj)        (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_ENTRY, GtkEntryClass))
  46.  
  47.  
  48. typedef struct _GtkEntry       GtkEntry;
  49. typedef struct _GtkEntryClass  GtkEntryClass;
  50.  
  51. struct _GtkEntry
  52. {
  53.   GtkWidget  widget;
  54.  
  55.   gchar     *text;
  56.  
  57.   guint      editable : 1;
  58.   guint      visible  : 1;
  59.   guint      overwrite_mode : 1;
  60.   guint      in_drag : 1;    /* Dragging within the selection */
  61.  
  62.   guint16 text_length;    /* length in use, in chars */
  63.   guint16 text_max_length;
  64.  
  65.   /*< private >*/
  66.   GdkWindow *text_area;
  67.   GtkIMContext *im_context;
  68.   GtkWidget   *popup_menu;
  69.   
  70.   gint         current_pos;
  71.   gint         selection_bound;
  72.   
  73.   PangoLayout *cached_layout;
  74.   guint        cache_includes_preedit : 1;
  75.  
  76.   guint        need_im_reset : 1;
  77.  
  78.   guint        has_frame : 1;
  79.  
  80.   guint        activates_default : 1;
  81.  
  82.   guint        cursor_visible : 1;
  83.  
  84.   guint        in_click : 1;    /* Flag so we don't select all when clicking in entry to focus in */
  85.  
  86.   guint        is_cell_renderer : 1;
  87.   guint        editing_canceled : 1; /* Only used by GtkCellRendererText */
  88.  
  89.   guint        mouse_cursor_obscured : 1;
  90.   
  91.   guint        select_words : 1;
  92.   guint        select_lines : 1;
  93.   guint        resolved_dir : 4; /* PangoDirection */
  94.   guint   button;
  95.   guint   blink_timeout;
  96.   guint   recompute_idle;
  97.   gint    scroll_offset;
  98.   gint    ascent;    /* font ascent, in pango units  */
  99.   gint    descent;    /* font descent, in pango units  */
  100.   
  101.   guint16 text_size;    /* allocated size, in bytes */
  102.   guint16 n_bytes;    /* length in use, in bytes */
  103.  
  104.   guint16 preedit_length;    /* length of preedit string, in bytes */
  105.   guint16 preedit_cursor;    /* offset of cursor within preedit string, in chars */
  106.  
  107.   gint dnd_position;        /* In chars, -1 == no DND cursor */
  108.  
  109.   gint drag_start_x;
  110.   gint drag_start_y;
  111.   
  112.   gunichar invisible_char;
  113.  
  114.   gint width_chars;
  115. };
  116.  
  117. struct _GtkEntryClass
  118. {
  119.   GtkWidgetClass parent_class;
  120.  
  121.   /* Hook to customize right-click popup */
  122.   void (* populate_popup)   (GtkEntry       *entry,
  123.                              GtkMenu        *menu);
  124.   
  125.   /* Action signals
  126.    */
  127.   void (* activate)           (GtkEntry       *entry);
  128.   void (* move_cursor)        (GtkEntry       *entry,
  129.                    GtkMovementStep step,
  130.                    gint            count,
  131.                    gboolean        extend_selection);
  132.   void (* insert_at_cursor)   (GtkEntry       *entry,
  133.                    const gchar    *str);
  134.   void (* delete_from_cursor) (GtkEntry       *entry,
  135.                    GtkDeleteType   type,
  136.                    gint            count);
  137.   void (* backspace)          (GtkEntry       *entry);
  138.   void (* cut_clipboard)      (GtkEntry       *entry);
  139.   void (* copy_clipboard)     (GtkEntry       *entry);
  140.   void (* paste_clipboard)    (GtkEntry       *entry);
  141.   void (* toggle_overwrite)   (GtkEntry       *entry);
  142.  
  143.   /* Padding for future expansion */
  144.   void (*_gtk_reserved1) (void);
  145.   void (*_gtk_reserved2) (void);
  146.   void (*_gtk_reserved3) (void);
  147. };
  148.  
  149. GType      gtk_entry_get_type               (void) G_GNUC_CONST;
  150. GtkWidget* gtk_entry_new                    (void);
  151. void       gtk_entry_set_visibility         (GtkEntry      *entry,
  152.                          gboolean       visible);
  153. gboolean   gtk_entry_get_visibility             (GtkEntry      *entry);
  154. void       gtk_entry_set_invisible_char         (GtkEntry      *entry,
  155.                                                  gunichar       ch);
  156. gunichar   gtk_entry_get_invisible_char         (GtkEntry      *entry);
  157. void       gtk_entry_set_has_frame              (GtkEntry      *entry,
  158.                                                  gboolean       setting);
  159. gboolean   gtk_entry_get_has_frame              (GtkEntry      *entry);
  160. /* text is truncated if needed */
  161. void       gtk_entry_set_max_length         (GtkEntry      *entry,
  162.                          gint           max);
  163. gint       gtk_entry_get_max_length             (GtkEntry      *entry);
  164. void       gtk_entry_set_activates_default      (GtkEntry      *entry,
  165.                                                  gboolean       setting);
  166. gboolean   gtk_entry_get_activates_default      (GtkEntry      *entry);
  167.  
  168. void       gtk_entry_set_width_chars            (GtkEntry      *entry,
  169.                                                  gint           n_chars);
  170. gint       gtk_entry_get_width_chars            (GtkEntry      *entry);
  171.  
  172. /* Somewhat more convenient than the GtkEditable generic functions
  173.  */
  174. void       gtk_entry_set_text                   (GtkEntry      *entry,
  175.                                                  const gchar   *text);
  176. /* returns a reference to the text */
  177. G_CONST_RETURN gchar* gtk_entry_get_text        (GtkEntry      *entry);
  178.  
  179. PangoLayout* gtk_entry_get_layout               (GtkEntry      *entry);
  180. void         gtk_entry_get_layout_offsets       (GtkEntry      *entry,
  181.                                                  gint          *x,
  182.                                                  gint          *y);
  183. void       gtk_entry_set_alignment              (GtkEntry      *entry,
  184.                                                  gfloat         xalign);
  185. gfloat     gtk_entry_get_alignment              (GtkEntry      *entry);
  186.  
  187. void                gtk_entry_set_completion (GtkEntry           *entry,
  188.                                               GtkEntryCompletion *completion);
  189. GtkEntryCompletion *gtk_entry_get_completion (GtkEntry           *entry);
  190.  
  191. gint       gtk_entry_layout_index_to_text_index (GtkEntry      *entry,
  192.                                                  gint           layout_index);
  193. gint       gtk_entry_text_index_to_layout_index (GtkEntry      *entry,
  194.                                                  gint           text_index);
  195.  
  196.  
  197. /* Deprecated compatibility functions
  198.  */
  199.  
  200. #ifndef GTK_DISABLE_DEPRECATED
  201. GtkWidget* gtk_entry_new_with_max_length    (gint           max);
  202. void       gtk_entry_append_text            (GtkEntry      *entry,
  203.                          const gchar   *text);
  204. void       gtk_entry_prepend_text           (GtkEntry      *entry,
  205.                          const gchar   *text);
  206. void       gtk_entry_set_position           (GtkEntry      *entry,
  207.                          gint           position);
  208. void       gtk_entry_select_region          (GtkEntry      *entry,
  209.                          gint           start,
  210.                          gint           end);
  211. void       gtk_entry_set_editable           (GtkEntry      *entry,
  212.                          gboolean       editable);
  213. #endif /* GTK_DISABLE_DEPRECATED */
  214.  
  215. /* private */
  216. void      _gtk_entry_get_borders                (GtkEntry *entry,
  217.                          gint     *xborder,
  218.                          gint     *yborder);
  219.  
  220.  
  221. G_END_DECLS
  222.  
  223. #endif /* __GTK_ENTRY_H__ */
  224.